1 
  2 #ifndef __MT9D111_H__
  3 #define __MT9D111_H__
  4 
  5 /*******************************************************************************************
  6  #  Display resolution standards #
  7         QCIF    : 176 x 144
  8         CIF             : 352 x 288
  9         QVGA    : 320 x 240
 10         VGA             : 640 x 480 
 11         SVGA    : 800 x 600 
 12         XGA             : 1024 x 768 
 13         WXGA    : 1280 x 800 
 14         QVGA    : 1280 x 960 
 15         SXGA    : 1280 x 1024 
 16         SXGA+   : 1400 x 1050 
 17         WSXGA+  : 1680 x 1050 
 18         UXGA    : 1600 x 1200 
 19         WUXGA   : 1920 x 1200 
 20         QXGA    : 2048 x 1536
 21 ********************************************************************************************/
 22 
 23 #define MT9D111_DELAY 0xF0
 24 #define MT9D111_TERM 0xFF
 25                                                                                 
 26 struct mt9d111_reg{
 27         unsigned char page;
 28         unsigned char subaddr;
 29         unsigned short value;
 30 };
 31 
 32 struct mt9d111_reg mt9d111Init[] = 
 33 {
 34 #if 1
 35         {0, 0x33, 0x0343        }, // RESERVED_CORE_33
 36         {1, 0xC6, 0xA115        }, //SEQ_LLMODE
 37         {1, 0xC8, 0x0020        }, //SEQ_LLMODE
 38         {0, 0x38, 0x0866        }, // RESERVED_CORE_38
 39         {MT9D111_DELAY, 0x00, 0x0064 }, // Delay =100ms
 40 #if 1
 41         {2, 0x80, 0x0168        }, // LENS_CORRECTION_CONTROL
 42         {2, 0x81, 0x6432        }, // ZONE_BOUNDS_X1_X2
 43         {2, 0x82, 0x3296        }, // ZONE_BOUNDS_X0_X3
 44         {2, 0x83, 0x9664        }, // ZONE_BOUNDS_X4_X5
 45         {2, 0x84, 0x5028        }, // ZONE_BOUNDS_Y1_Y2
 46         {2, 0x85, 0x2878        }, // ZONE_BOUNDS_Y0_Y3
 47         {2, 0x86, 0x7850        }, // ZONE_BOUNDS_Y4_Y5
 48         {2, 0x87, 0x0000        }, // CENTER_OFFSET
 49         {2, 0x88, 0x0152        }, // FX_RED
 50         {2, 0x89, 0x015C        }, // FX_GREEN
 51         {2, 0x8A, 0x00F4        }, // FX_BLUE
 52         {2, 0x8B, 0x0108        }, // FY_RED
 53         {2, 0x8C, 0x00FA        }, // FY_GREEN
 54         {2, 0x8D, 0x00CF        }, // FY_BLUE
 55         {2, 0x8E, 0x09AD        }, // DF_DX_RED
 56         {2, 0x8F, 0x091E        }, // DF_DX_GREEN
 57         {2, 0x90, 0x0B3F        }, // DF_DX_BLUE
 58         {2, 0x91, 0x0C85        }, // DF_DY_RED
 59         {2, 0x92, 0x0CFF        }, // DF_DY_GREEN
 60         {2, 0x93, 0x0D86        }, // DF_DY_BLUE
 61         {2, 0x94, 0x163A        }, // SECOND_DERIV_ZONE_0_RED
 62         {2, 0x95, 0x0E47        }, // SECOND_DERIV_ZONE_0_GREEN
 63         {2, 0x96, 0x103C        }, // SECOND_DERIV_ZONE_0_BLUE
 64         {2, 0x97, 0x1D35        }, // SECOND_DERIV_ZONE_1_RED
 65         {2, 0x98, 0x173E        }, // SECOND_DERIV_ZONE_1_GREEN
 66         {2, 0x99, 0x1119        }, // SECOND_DERIV_ZONE_1_BLUE
 67         {2, 0x9A, 0x1663        }, // SECOND_DERIV_ZONE_2_RED
 68         {2, 0x9B, 0x1569        }, // SECOND_DERIV_ZONE_2_GREEN
 69         {2, 0x9C, 0x104C        }, // SECOND_DERIV_ZONE_2_BLUE
 70         {2, 0x9D, 0x1015        }, // SECOND_DERIV_ZONE_3_RED
 71         {2, 0x9E, 0x1010        }, // SECOND_DERIV_ZONE_3_GREEN
 72         {2, 0x9F, 0x0B0A        }, // SECOND_DERIV_ZONE_3_BLUE
 73         {2, 0xA0, 0x0D53        }, // SECOND_DERIV_ZONE_4_RED
 74         {2, 0xA1, 0x0D51        }, // SECOND_DERIV_ZONE_4_GREEN
 75         {2, 0xA2, 0x0A44        }, // SECOND_DERIV_ZONE_4_BLUE
 76         {2, 0xA3, 0x1545        }, // SECOND_DERIV_ZONE_5_RED
 77         {2, 0xA4, 0x1643        }, // SECOND_DERIV_ZONE_5_GREEN
 78         {2, 0xA5, 0x1231        }, // SECOND_DERIV_ZONE_5_BLUE
 79         {2, 0xA6, 0x0047        }, // SECOND_DERIV_ZONE_6_RED
 80         {2, 0xA7, 0x035C        }, // SECOND_DERIV_ZONE_6_GREEN
 81         {2, 0xA8, 0xFE30        }, // SECOND_DERIV_ZONE_6_BLUE
 82         {2, 0xA9, 0x4625        }, // SECOND_DERIV_ZONE_7_RED
 83         {2, 0xAA, 0x47F3        }, // SECOND_DERIV_ZONE_7_GREEN
 84         {2, 0xAB, 0x5859        }, // SECOND_DERIV_ZONE_7_BLUE
 85         {2, 0xAC, 0x0000        }, // X2_FACTORS
 86         {2, 0xAD, 0x0000        }, // GLOBAL_OFFSET_FXY_FUNCTION
 87         {2, 0xAE, 0x0000        }, // K_FACTOR_IN_K_FX_FY
 88         {1, 0x08, 0x01FC        }, // COLOR_PIPELINE_CONTROL
 89         {MT9D111_DELAY, 0x00, 0x0064 }, // Delay =100ms
 90         {1, 0xBE, 0x0004        }, // YUV_YCBCR_CONTROL
 91         {0, 0x65, 0xA000        }, // CLOCK_ENABLING
 92         {MT9D111_DELAY, 0x00, 0x0064 }, // Delay =100ms
 93 #endif
 94 #if 1
 95         {1, 0xC6, 0xA102        }, //SEQ_MODE
 96         {1, 0xC8, 0x001F        }, //SEQ_MODE
 97         {1, 0x08, 0x01FC        }, // COLOR_PIPELINE_CONTROL
 98         {1, 0x08, 0x01EC        }, // COLOR_PIPELINE_CONTROL
 99         {1, 0x08, 0x01FC        }, // COLOR_PIPELINE_CONTROL
100         {1, 0x36, 0x0F08        }, // APERTURE_PARAMETERS
101         {1, 0xC6, 0x270B        }, //MODE_CONFIG
102         {1, 0xC8, 0x0030        }, //MODE_CONFIG, JPEG disabled for A and B
103         {1, 0xC6, 0xA121        }, //SEQ_CAP_MODE
104         {1, 0xC8, 0x007f        }, //SEQ_CAP_MODE (127 frames before switching to Preview)
105         {0, 0x05, 0x011E        }, // HORZ_BLANK_B
106         {0, 0x06, 0x006F        }, // VERT_BLANK_B
107         {0, 0x07, 0xFE          }, // HORZ_BLANK_A
108         {0, 0x08, 19            }, // VERT_BLANK_A
109         {0, 0x20, 0x0300        }, // READ_MODE_B (Image flip settings)
110         {0, 0x21, 0x8400        }, // READ_MODE_A (1ADC)
111 #endif
112 #if 1
113         {1, 0xC6, 0x2717        }, //MODE_SENSOR_X_DELAY_A
114         {1, 0xC8, 792           }, //MODE_SENSOR_X_DELAY_A
115         {1, 0xC6, 0x270F        }, //MODE_SENSOR_ROW_START_A
116         {1, 0xC8, 0x001C        }, //MODE_SENSOR_ROW_START_A
117         {1, 0xC6, 0x2711        }, //MODE_SENSOR_COL_START_A
118         {1, 0xC8, 0x003C        }, //MODE_SENSOR_COL_START_A
119         {1, 0xC6, 0x2713        }, //MODE_SENSOR_ROW_HEIGHT_A
120         {1, 0xC8, 0x04B0        }, //MODE_SENSOR_ROW_HEIGHT_A
121         {1, 0xC6, 0x2715        }, //MODE_SENSOR_COL_WIDTH_A
122         {1, 0xC8, 0x0640        }, //MODE_SENSOR_COL_WIDTH_A
123         {1, 0xC6, 0x2719        }, //MODE_SENSOR_ROW_SPEED_A
124         {1, 0xC8, 0x0011        }, //MODE_SENSOR_ROW_SPEED_A
125         {1, 0xC6, 0x2707        }, //MODE_OUTPUT_WIDTH_B
126         {1, 0xC8, 0x0640        }, //MODE_OUTPUT_WIDTH_B
127         {1, 0xC6, 0x2709        }, //MODE_OUTPUT_HEIGHT_B
128         {1, 0xC8, 0x04B0        }, //MODE_OUTPUT_HEIGHT_B
129         {1, 0xC6, 0x271B        }, //MODE_SENSOR_ROW_START_B
130         {1, 0xC8, 0x001C        }, //MODE_SENSOR_ROW_START_B
131         {1, 0xC6, 0x271D        }, //MODE_SENSOR_COL_START_B
132         {1, 0xC8, 0x003C        }, //MODE_SENSOR_COL_START_B
133         {1, 0xC6, 0x271F        }, //MODE_SENSOR_ROW_HEIGHT_B
134         {1, 0xC8, 0x04B0        }, //MODE_SENSOR_ROW_HEIGHT_B
135         {1, 0xC6, 0x2721        }, //MODE_SENSOR_COL_WIDTH_B
136         {1, 0xC8, 0x0640        }, //MODE_SENSOR_COL_WIDTH_B
137         {1, 0xC6, 0x2723        }, //MODE_SENSOR_X_DELAY_B
138         {1, 0xC8, 0x0716        }, //MODE_SENSOR_X_DELAY_B
139         {1, 0xC6, 0x2725        }, //MODE_SENSOR_ROW_SPEED_B
140         {1, 0xC8, 0x0011        }, //MODE_SENSOR_ROW_SPEED_B
141 #endif
142 //      HANI tmp
143 ////////////////////////////////////////////////////////////////
144 #if 1
145         {1, 0xC6, 0x2703    }, //MODE_OUTPUT_WIDTH_A
146         {1, 0xC8, 0x0280    }, //MODE_OUTPUT_WIDTH_A
147         {1, 0xC6, 0x2705    }, //MODE_OUTPUT_HEIGHT_A
148         {1, 0xC8, 0x01E0    }, //MODE_OUTPUT_HEIGHT_A
149         {1, 0xC6, 0x2707    }, //MODE_OUTPUT_WIDTH_B
150         {1, 0xC8, 0x0280    }, //MODE_OUTPUT_WIDTH_B
151         {1, 0xC6, 0x2709    }, //MODE_OUTPUT_HEIGHT_B
152         {1, 0xC8, 0x01E0    }, //MODE_OUTPUT_HEIGHT_B
153         {1, 0xC6, 0x2779    }, //Spoof Frame Width
154         {1, 0xC8, 0x0280    }, //Spoof Frame Width
155         {1, 0xC6, 0x277B    }, //Spoof Frame Height
156         {1, 0xC8, 0x01E0    }, //Spoof Frame Height
157         {1, 0xC6, 0xA103    }, //SEQ_CMD
158         {1, 0xC8, 0x0005    }, //SEQ_CMD
159 #endif
160 ////////////////////////////////////////////////////////////////
161 #if 1
162         //Maximum Slew-Rate on IO-Pads (for Mode A)
163         {1, 0xC6, 0x276B        }, //MODE_FIFO_CONF0_A
164         {1, 0xC8, 0x0027        }, //MODE_FIFO_CONF0_A
165         {1, 0xC6, 0x276D        }, //MODE_FIFO_CONF1_A
166         {1, 0xC8, 0xE1E1        }, //MODE_FIFO_CONF1_A
167         {1, 0xC6, 0xA76F        }, //MODE_FIFO_CONF2_A
168         {1, 0xC8, 0x00E1        }, //MODE_FIFO_CONF2_A
169 #endif
170 #if 1
171         //Maximum Slew-Rate on IO-Pads (for Mode B)
172         {1, 0xC6, 0x2772        }, //MODE_FIFO_CONF0_B
173         {1, 0xC8, 0x0027        }, //MODE_FIFO_CONF0_B
17